<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script src="../js/vue.js"></script>
    <style>
        #demo {
            width: 200px;
            height: 200px;
            background-color: #6ff;
            margin: 50px;
        }
    </style>
</head>

<body>
    <div id="app">
        <!-- 静态绑定 -->
        <div id="demo" class="one"></div>
        <!-- 动态绑定 绑定的是data中对应属性名的值-->
        <div id="demo" :class="cls"></div>
        <div id="demo" :class="clss"></div>
        <div id="demo" :class="list"></div>
        <div id="demo" :class="obj"></div>
        <div id="demo" :class="comb"></div>

        <!--  -->
        <div id="demo" :class="'one'"></div>
        <div id="demo" :class="'one two three'"></div>
        <div id="demo" :class="['one','two','three']"></div>
        <!-- count -> 依赖于data中同名属性的值 -->
        <div id="demo" :class="{one:true,two:false,three:true,isActive:count % 2 == 0}"></div>
        <div id="demo" :class="comb"></div>



        <div id="demo" class="list" :class="'one'"></div>
        <div id="demo" class="list" :class="'one two three'"></div>
        <div id="demo" class="list" :class="['one','two','three']"></div>
        <!-- count -> 依赖于data中同名属性的值 -->
        <div id="demo" class="list" :class="{one:true,two:false,three:true,isActive:count % 2 == 0}"></div>
        <div id="demo" class="list" :class="comb"></div>
    </div>
</body>
<script>
    // 操作元素的 class 列表和内联样式是数据绑定的一个常见需求。因为它们都是 attribute，所以我们可以用 v-bind 处理它们：只需要通过表达式计算出字符串结果即可。不过，字符串拼接麻烦且易错。因此，在将 v-bind 用于 class 和 style 时，Vue.js 做了专门的增强。表达式结果的类型除了字符串之外，还可以是对象或数组。
    // v-bind  
    // 1. 一般情况下,v-bind指令的结果要求是字符串类型,如果不是字符串,会隐式转字符串  (如果指令的值是null和undefined 该属性将不会动态绑定)
    // 2. 操作元素的 class 列表和内联样式是数据绑定的一个常见需求, v-bind 用于 class 和 style 时，Vue.js 做了专门的增强。表达式结果的类型除了字符串之外，还可以是对象或数组

    new Vue({
        el: "#app",
        data: {
            count:1,
            cls: "one",
            clss: "one two three",
            // :class绑定数据 -> 数组中的元素会直接作为class的名字进行拼接
            list: ["one", "two", "three"],
            obj: {
                // 对象的键名就是要拼接的class名, 键值表示是否拼接(true 新增/拼接, false-> 不新增)
                "one": true,
                "two": false,
                "three": true,
                // 此写法不能使用data中的数据
                // isActive: count % 2 == 0
            },
            comb: ["one", { two: true }, "three"]
        }
    })


 

    // var obj = {
    //     a:1,
    //     b:2,
    //     c:a+b,
    //     c:this.a+this.b,  // this -> window 
    // }
    // console.log(obj);

</script>

</html>